Clear Clips for Playback
A song's ownership may transfer or a clearance may expire from day to day. Feed regularly checks rights data for the entire catalog and exposes those updates through the API.
Your app must check for clip rights on a daily basis either by requesting a fresh clip URL or using an explicit rights check endpoint. The play endpoint acts as a final failsafe, returning an error response in the case of lost rights.
For background on how rights work, see The Rights & Licensing Model.
Live-Fetch Playback
If your app calls the Feed API to fetch a fresh clip URL each time a clip is about to play, use the Fetch Clips endpoint (GET /v2/clips). Pass a list of clip IDs and the API returns clip objects in the same order. Any clip that is no longer licensed for playback is returned with success: false instead of a clip object.
Your app should treat a success: false item as unavailable. Skip or hide it rather than attempting to play it.
Report-Only / Synced Playback
If your app syncs (or muxes) clips into video content, you will not be fetching fresh URLs at play time. Instead, pre-clear clips before playback using the rights-check endpoints:
- Bulk: Bulk Rights Check (
GET /v2/clips/rights) — pass a list of clip IDs. The response identifies which IDs are no longer playable. An empty result means all clips are currently licensed. - Single clip: Single Clip Rights Check (
GET /v2/clips/{id}/rights) — check rights for one clip at a time.
Mark any ID flagged by these endpoints as unavailable in your system so it is not presented for playback.
Play Events as Failsafe
Regardless of which path you use, your app must call the Report Clip Play endpoint (POST /v2/clips/{id}/play) when a clip begins playback. This endpoint is the licensing failsafe: if a clip's rights have lapsed since your last check, the play call will return an error. Stop playback immediately if you receive a rights failure from this endpoint.
Never continue playback after a rights failure from the play endpoint. Doing so risks a licensing violation.
In v1, the rights pre-check was POST /music-check (see v1 reference). In v2, this is replaced by GET /v2/clips/rights (bulk) and GET /v2/clips/{id}/rights (single). The v1 play endpoint (POST /play) maps to POST /v2/clips/{id}/play in v2.